class External {
    public int data1 = 1;
    int data2 = 2;
    static int data3 = 3;


    /**
     *  实例内部类(非静态内部类)
     *  1. 如何获取 实例内部类的对象
     *          External external = new External();
     *         External.Internal internal = external.new Internal();
     *  2. 实例内部类当中 不能有静态的成员变量. 非要定义，那么只能是被static final修饰的
     *  3. 在实例内部类当中，如何访问外部类当中，相同的成员变量？
     *          在实例内部类当中 获取外部类的this ： External.this.data1
     */
    class Internal {
        public int data4;
        int data5;
        public static final int data6 = 6;//内部类成员不能用static修饰，如果非要的话，加上final，变成一个常量
        int data1 = 113;

        public void func() {
            //内部类成员名与外部类成员名相同时，访问外部类成员：外部类名.this.成员
            System.out.println(External.this.data1);

            System.out.println(data1);
            System.out.println(data2);
            System.out.println(data3);
            System.out.println(data4);
            System.out.println(data5);
            System.out.println(data6);
        }
    }
}

public class Test {
    public static void main(String[] args) {
        //
        External external = new External();
        External.Internal internal = external.new Internal();
        internal.data4 = 4;
        internal.data5 = 5;
        internal.func();
      }
}
